package cl.tinet.reservaCD.sala;

import java.util.ArrayList;

import javax.ejb.Remote;

import cl.tinet.reservaCD.exception.SalaExisteException;
import cl.tinet.reservaCD.exception.SalaNoExisteException;
import cl.tinet.reservaCD.modelo.Sala;

/**
 * 
 * Clase interface de Sala bean.
 * 
 * @author Carlos Duque.
 */
@Remote
public interface SalaBean {

    /**
     * Metodo crear una nueva sala en la base de datos.
     * 
     * @param salaCrear
     *            nueva sala en la base de datos.
     * @throws SalaExisteException
     *             sala existe.
     */
    void crearSala(Sala salaCrear) throws SalaExisteException;

    /**
     * Metodo eliminar una sala en la base de datos.
     * 
     * @param salaEliminar
     *            sala que se va a eliminar en la base de datos.
     * @throws SalaNoExisteException
     *             sala no existe.
     */
    void eliminarSala(Sala salaEliminar) throws SalaNoExisteException;

    /**
     * Metodo que actualiza una sala en la base de datos.
     * 
     * @param salaActualizar
     *            sala que se va a actualizar.
     * @throws SalaNoExisteException
     *             sala no existe.
     */
    void actualizarSala(Sala salaActualizar) throws SalaNoExisteException;

    /**
     * Metodo que busca una sala en la base de datos.
     * 
     * @param salaBusqueda
     *            sala a buscar en la base de datos.
     * @return sala encontrado en la base de datos.
     * @throws SalaNoExisteException
     *             sala no existe.
     */
    Sala buscarSala(Sala salaBusqueda);

    /**
     * Metodo que lista las salas que estan en la base de datos.
     * 
     * @return un lista de las salas encontradas.
     */
    ArrayList<Sala> listarSala();

}
